home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Leser 15 / Amiga Plus Leser CD 15.iso / Tools / Development / mmu / MuManual / C_Sources / FastVBRSub.asm next >
Assembly Source File  |  2002-03-12  |  1KB  |  76 lines

  1.     xref _MMUBase
  2.     xref _SysBase
  3.  
  4.     machine mc68010
  5.  
  6. Supervisor            =    -30
  7. WithoutMMU                      =       -270
  8. KickMemPtr            =    $222
  9.  
  10.     section TEXT,code
  11.  
  12.     xdef _CopyMMULess
  13. _CopyMMULess:
  14.     movem.l a5-a6,-(a7)
  15.     move.l _MMUBase(a4),a6
  16.     lea __CopyCode(pc),a5
  17.     jsr WithoutMMU(a6)
  18.     movem.l (a7)+,a5-a6
  19.     rts
  20.  
  21. __CopyCode:
  22.     move.b (a0)+,(a1)+
  23.     subq.l #1,d0
  24.     bne.s __CopyCode
  25.     rts
  26.  
  27.  
  28.     xdef _GetVBR
  29. _GetVBR:
  30.     movem.l a5-a6,-(a7)
  31.     move.l _SysBase(a4),a6
  32.     lea __GetVBR(pc),a5
  33.     jsr Supervisor(a6)
  34.     movem.l (a7)+,a5-a6
  35.     rts
  36. __GetVBR:
  37.     movec.l vbr,d0
  38.     rte
  39.  
  40.     xdef _SetVBR
  41. _SetVBR:
  42.     movem.l a5-a6,-(a7)
  43.     move.l _SysBase(a4),a6
  44.     lea __SetVBR(pc),a5
  45.     jsr Supervisor(a6)
  46.     movem.l (a7)+,a5-a6
  47.     rts
  48. __SetVBR:
  49.     movec.l a0,vbr
  50.     rte
  51.  
  52.     xdef _NewSumKickData
  53. _NewSumKickData:
  54.     movem.l d2-d4/a5-a6,-(a7)
  55.  
  56.     move.l -4+_NewSumKickData(pc),a0    ;get the old entry point
  57.     jsr (a0)                ;call it
  58.     move.l d0,d4                ;keep the new checksum
  59.     move.l a6,a0
  60.     lea _InstallIntoCopy(pc),a5
  61.     move.l -8+_NewSumKickData(pc),a6    ;MMUBase
  62.     movem.l KickMemPtr(a0),d2-d3        ;read other data
  63.     jsr WithoutMMU(a6)
  64.  
  65.     move.l d4,d0                ;proper return code
  66.     movem.l (a7)+,d2-d4/a5-a6
  67.     rts
  68.  
  69. _InstallIntoCopy:                ;move the data into the original code
  70.     movem.l d2-d4,KickMemPtr(a0)
  71.     rts
  72.     nop
  73.     xdef _NewSumKickDataEnd
  74. _NewSumKickDataEnd:
  75.     rts
  76.